//矩阵中战斗力最弱的 K 行
/*给你一个大小为 m * n 的矩阵 mat，矩阵由若干军人和平民组成，分别用 1 和 0 表示。

请你返回矩阵中战斗力最弱的 k 行的索引，按从最弱到最强排序。

如果第 i 行的军人数量少于第 j 行，或者两行军人数量相同但 i 小于 j，那么我们认为第 i 行的战斗力比第 j 行弱。

军人 总是 排在一行中的靠前位置，也就是说 1 总是出现在 0 之前。
m == mat.length
n == mat[i].length
2 <= n, m <= 100
1 <= k <= m
matrix[i][j] 不是 0 就是 1
*/
class Solution {
public:
    struct date {
        int val;
        int index;
    };
    static bool compare(date& q1, date& q2) {
        if (q1.val == q2.val) {
            if (q1.index < q2.index)
                return true;
            else
                return false;
        }
        if (q1.val < q2.val)
            return true;
        else
            return false;
    }

    vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
        vector<date> _date;
        for (int i = 0; i < mat.size(); i++) {
            int count = 0;
            for (int j = 0; j < mat[i].size(); j++) {
                if (mat[i][j])
                    count++;
                else
                    break;
            }
            date* Date = new date;
            Date->val = count;
            Date->index = i;
            _date.push_back(*Date);
        }
        sort(_date.begin(), _date.end(), compare);
        vector<int> arr;
        for (int i = 0; i < k; i++) {
            arr.push_back(_date[i].index);
        }
        return arr;
    }
};




